#pragma once

#include <stddef.h>
#include <stdint.h>

/**
 * @brief 堆元素结构
 */
struct HeapItem 
{
    uint64_t val = 0;       ///< 堆元素的值（时间戳）
    size_t *ref = NULL;     ///< 指向元素在堆中位置的引用
};

/**
 * @brief 更新堆中指定位置的元素，维护堆性质
 * @param a 堆数组
 * @param pos 要更新的位置
 * @param len 堆的大小
 */
void heap_update(HeapItem *a, size_t pos, size_t len); 